package com.neusoft.liduan.d0914;

/*
 * 实现一个计算器功能。要求
    1，由键盘输入一个字符串，首先判断输入的是否为纯数字，如果是纯数字将值赋给Calculator类的x属性
    2，由键盘输入一个字符串，首先判    断输入的是否为（+-/*）其中一个，如果是赋值给mark属性
    3，由键盘输入一个字符串，首先，注意： 判断输入的是否为纯数字，如果是纯数字将值赋给Calculator类的y属性；如果是做除法，当y为0时，提示“y为除数时，不能为0”
    4，步骤1和3，首先对输入的字符做是否为空判断，如果为空，提示“X或Y不能为空，请重新输入”，然后如果输入的x或y不是纯数字，请提示“输入有误，请重新输入”。
    5，输入一个“=”号，打印结果，格式如下x + y = ?
    6，如果继续输入，将得到的结果赋值给x，然后输入运算符再输入y的值，再输入“=”，计算结果并打印
    7，如果输入“q”或者“Q”，提示“程序已退出，感谢使用”并程序不能再输入任何信息
    8，如果输入“c”，提示“重置成功”，将x，y，mark全部重置。类似于重新启动程序
 */
public class Cal {
	private Integer x;
	private Integer y;
	private String mark;
	
	public Cal() {
		
	}
	
	public Cal(int x, int y, String mark) {
		this.x = x;
		this.y = y;
		this.mark = mark;
	}
	
	public int result() {
		int result = 0;
		/*	在Java中
		 * 		1.7版本开始switch支持字符串等 
		 * 
		 */
		switch (mark) {
		case "+":
			result = x + y;
			System.out.println(x + " + " + y + " = " + result);
			break;
		case "-":
			result = x - y;
			System.out.println(x + " - " + y + " = " + result);
			break;
		case "*":
			result = x * y;
			System.out.println(x + " * " + y + " = " + result);
			break;
		case "/":
			result = x / y;
			System.out.println(x + " / " + y + " = " + result);
			break;

		default:
			System.out.println("mark:::" + mark);
			break;
		}
		
		return result;
	}
	
	public String getX() {
		return x + "";
	}
	
	public void setX(String x) {
		this.x = Integer.valueOf(x);
	}
	public String getY() {
		return y + "";
	}
	public void setY(String y) {
		this.y = Integer.valueOf(y);
	}
	public String getMark() {
		return mark;
	}
	public void setMark(String mark) {
		this.mark = mark;
	}
	
	@Override
	public String toString() {
		return "Cal [x=" + x + ", y=" + y + ", mark=" + mark + "]";
	}

	/**
	 * 判断字符串str是否为纯数字
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNumber(String str) {
//		for(int i = 0; i < str.length(); i++) {
//			if(str.charAt(i) < '0' || str.charAt(i) > '9') {
//				return false;
//			}
//		}
		if (str == null || str.length() == 0) {// 避免空指针
			return false;
		}

		char[] array = str.toCharArray();
		for (int i = 0; i < array.length; i++) {
			if (array[i] < '0' || array[i] > '9') {
				return false;
			}
		}

		return true;
	}
	
}
